namespace Bean.Entity.Dto.PolicyPushDto;

public class BasePolicyPoolInfo
{
    /// <summary>
    /// 运价类型（多选）
    /// </summary>
    public string flightFareTypeJson { get; set; }

    /// <summary>
    /// 展位mark（多选）
    /// </summary>
    public string mark { get; set; }

    /// <summary>
    /// 适用班期(周期)
    /// </summary>
    public string dayCondition { get; set; } = "1,2,3,4,5,6,7";

    /// <summary>
    /// 政策编码
    /// </summary>
    public string policyCode { get; set; }

    /// <summary>
    /// 适用出发机场 为空适用所有
    /// </summary>
    public string depAirport { get; set; }

    /// <summary>
    /// 适用到达机场 为空适用所有
    /// </summary>
    public string arrAirport { get; set; }

    /// <summary>
    /// 不适用航线
    /// 多个英文逗号”,“分隔
    /// </summary>
    public string forbidAirlines { get; set; }

    /// <summary>
    /// 行程类型 1-单程
    /// /2-往返
    /// </summary>
    public string tripType { get; set; }

    /// <summary>
    /// 航空公司
    /// </summary>
    public string airLine { get; set; }

    /// <summary>
    /// 定编OFFICE
    /// </summary>
    public string officecode { get; set; }

    /// <summary>
    /// 验价OFFICE
    /// </summary>
    public string patofficecode { get; set; }

    /// <summary>
    /// 是否PAT验价  (1 是,0 否)
    /// </summary>
    public int needPata { get; set; }

    /// <summary>
    /// 是否占编(定位) 0否 1是 2紧张定位 定编
    /// </summary>
    public int isneedpnr { get; set; }

    /// <summary>
    /// 定位处理
    /// 去哪儿: 不处理  生pnr  禁售
    /// 同程：拦截下单  收单
    /// 
    /// </summary>
    public string pnrHandle { get; set; } = "禁售";

    /// <summary>
    ///  
    /// </summary>
    public string notFlightDate { get; set; }

    /// <summary>
    /// av座位余数
    /// </summary>
    public int avCount { get; set; } = 5;

    /// <summary>
    /// 紧俏座位阀值
    /// 余坐阈值
    /// </summary>
    public int? seatLimit { get; set; }

    /// <summary>
    /// 开始销售日期
    /// YYYY-MM-dd
    /// </summary>
    public string saleStartDate { get; set; }

    /// <summary>
    /// 产品类型
    /// </summary>
    public string ProductType { get; set; }

    /// <summary>
    /// 销售结束日期
    /// YYYY-MM-dd
    /// </summary>
    public string saleEndDate { get; set; }

    /// <summary>
    /// 返点百分比比例
    /// </summary>
    public decimal ReturnPointPercentage { get; set; }

    /// <summary>
    /// 返点
    /// </summary>
    public decimal returnPoint { get; set; }

    /// <summary>
    /// 留钱
    /// </summary>
    public decimal returnPrice { get; set; }

    /// <summary>
    /// 固定追价阈值
    /// </summary>
    public decimal addthreshold { get; set; }

    /// <summary> 
    /// 固定追价返点
    /// </summary> 
    public decimal thresholdPointUp { get; set; }

    /// <summary>
    /// 使用舱位
    /// 多个用,分割
    /// </summary>
    public string cabin { get; set; }

    /// <summary>
    /// 旅行开始日期
    /// 格式是 YYYY-MM-dd
    /// </summary>
    public string tripStartDate { get; set; }

    /// <summary>
    /// 旅行结束日期
    /// YYYY-MM-dd
    /// </summary>
    public string tripEndDate { get; set; }


    /// <summary>
    /// 旅行开始时间
    /// 00:00
    /// </summary>
    public string tripStartTime { get; set; } = "00:00";

    /// <summary>
    /// 旅行结束时间
    /// 23:59
    /// </summary>
    public string TripEndTime { get; set; } = "23:59";

    /// <summary>
    /// 排除旅行开始时间
    /// YYYY-MM-dd
    /// </summary>
    public string tripExceptStartDate { get; set; }

    /// <summary>
    /// 排除旅行结束时间
    /// YYYY-MM-dd
    /// </summary>
    public string tripExceptEndDate { get; set; }

    // /// <summary>
    // /// 旅行回程开始时间
    // /// </summary>
    // public string rtStartDate { get; set; }
    //
    // /// <summary>
    // /// 旅行回程结束时间
    // /// </summary>
    // public string rtEndDate { get; set; }

    /// <summary>
    /// 最低票面
    /// </summary>
    public decimal minPrice { get; set; }

    /// <summary>
    /// 最高票面
    /// </summary>
    public decimal maxPrice { get; set; }

    /// <summary>
    /// 最小人数
    /// </summary>
    public int minPassenger { get; set; }

    /// <summary>
    /// 最大乘机人
    /// </summary>
    public int maxPassenger { get; set; }

    /// <summary>
    /// 票面来源
    /// 易旅行:0 指定票面 1取平台-适用舱位 2 官网
    /// </summary>

    public string ticketSource { get; set; }


    /// <summary>
    /// 乘客类型
    /// 多个以","分隔。1-成人/2-儿童/3-婴儿
    /// </summary>
    public string passengerType { get; set; }

    /// <summary>
    /// 最早出票时限
    /// 提前出票天数
    /// </summary>
    public int? beforeNdays { get; set; }

    /// <summary>
    /// 最晚出票时限
    /// 最大出票天数	
    /// </summary>
    public int? afterNdays { get; set; }

    /// <summary>
    /// 起飞前截止时间
    /// </summary>
    public int lockTime { get; set; }

    /// <summary>
    /// 销售时间
    /// </summary>
    public string saleTime { get; set; }

    /// <summary>
    /// 排除销售时间
    /// </summary>
    public string saleTimeLimit { get; set; }

    /// <summary>
    /// 航班号信息
    /// 航班号用,分割
    /// 根据航班类型判断是适用还是不适用
    /// </summary>

    public string flightNumbers { get; set; }

    /// <summary>
    /// 航班类型
    /// 单选 （0:全部, 1:适用航班, 2:不适用航班）
    /// </summary>
    public string goFlightRestrictType { get; set; }


    // public string flightNumber { get; set; }
    //
    // /// <summary>
    // /// 排除航班号
    // /// </summary>
    // public string excludeFlightNumber { get; set; }

    /// <summary>
    /// 政策备注
    /// </summary>
    public string policyRemark { get; set; }


    /// <summary>
    /// 指定票面价
    /// </summary>
    public decimal farePrice { get; set; }

    /// <summary>
    /// 是否共享验证主飞 1是 0否
    /// </summary>
    public int shareShowAct { get; set; }

    /// <summary>
    /// 默认0,0-取高 1-取低(票面来源取系统时必填)，2-只取FD价格
    /// </summary>
    public string nfdCharge { get; set; }

    /// <summary>
    /// 是否共享出主承运
    /// 0 否 1是
    /// </summary>
    public string CanOperateAirline { get; set; }

    /// <summary>
    /// 共享航司字段-主飞航司
    /// 航司二字码，多个用“,”隔开
    /// </summary>
    public string interlineAirlineCode { get; set; }

    /// <summary>
    /// 排除共享航司
    /// 航司二字码，多个用“,”隔开
    /// </summary>
    public string sharingAirlineForbid { get; set; }

    /// <summary>
    /// 航班时间限制
    /// </summary>
    public string flightTimeLimit { get; set; }


    /// <summary>
    /// 采购商编码
    /// </summary>
    public string purchaserCode { get; set; }


    /// <summary>
    ///  最小年龄
    /// </summary>
    public int minage { get; set; }

    /// <summary>
    /// 最大年龄
    /// </summary>
    public int maxage { get; set; }

    /// <summary>
    /// 关键字
    /// </summary>
    public string policyKeyWord { get; set; }

    /// <summary>
    /// 政策类型  PT:普通  TS:特殊  GZ:规则
    /// 去哪儿 PT
    /// 酷讯   PT
    /// 同程   PT TS
    /// 携程   PT TS GZ
    /// 飞猪   PT TS GZ
    /// 易旅行 GB公布 SY私有
    /// </summary>
    public string policyType { get; set; } = "PT";

    #region 去哪儿

    /// <summary>
    /// 可售卖范围 普通人群/采购人群
    /// </summary> 
    public string saleAvailable { get; set; } = "普通人群";

    /// <summary>
    /// 支持共享航班
    /// 0/不限 1/是 2/否
    /// </summary>
    public string IsCanSharingAirline { get; set; } = "2";

    /// <summary>
    /// 退票规则
    /// </summary>
    public string returnRule { get; set; } = "100-2-100";

    /// <summary>
    /// 1否 0是
    /// </summary>
    public string supportCba { get; set; } = "否";

    /// <summary>
    /// 改期规则
    /// </summary>
    public string changeRule { get; set; } = "100-2-100";

    /// <summary>
    /// 是否支持经停航班 [可选]
    /// </summary>
    public string stop { get; set; } = "是";

    /// <summary>
    /// 票面价取舍 十位四舍五入/十位五舍六入/个位向上取整/个位向下取整/十位向上取整/十位向下取整，指定票面价无须填写
    /// </summary>
    public string xPriceType { get; set; } = "个位向上取整";

    /// <summary>
    /// 特殊票务说明
    /// </summary>
    public string specialRule { get; set; } = "1002,1004,1006,1007";

    /// <summary>
    /// 政策状态
    /// </summary>
    public string status { get; set; } = "有效";

    /// <summary>
    /// 证件类型
    /// </summary>
    public int cardType { get; set; } = 0;

    #endregion

    #region 易旅行

    /// <summary>
    /// 开票方式 1：BSP 2：B2B 3：官网 4：其它
    /// </summary> 
    public string ticketType { get; set; }

    #endregion


    #region 往返行程字段

    /// <summary>
    /// 往返
    /// 第二程适用舱位
    /// 录入*代表录入全部舱位，多个舱位不需要分隔符，
    /// 如：FCXM1，最多支持 200 个字符长度
    /// </summary>
    public string cabin2 { get; set; }

    /// <summary>
    /// 往返 选填
    /// 第二程不适用舱位
    /// 多个舱位之间不需要分隔符，支持子舱，如：FCXM1 
    /// </summary>
    public string forbidCabin2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程航班号限制
    /// 适用/不适用/所有
    /// </summary>
    public string flightNoLimit2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程航班限制条件
    /// 航班限制为所有则不填
    /// 适用则填写适用航班号，多个用英文的“,”分隔，最多不超过 40 个航班号
    /// 不适用则填写不适用航班号
    /// </summary>
    public string flightCondition2 { get; set; }

    /// <summary>
    /// 往返
    /// 第二程支持共享航班
    /// 是/否
    /// </summary>
    //public string shared2 { get; set; }

    /// <summary>
    /// 往返[必填]
    /// 第二程有效航班起飞日期起始
    /// 输入格式： YYYY-MM-DD
    /// </summary>
    public string dptDateStart2 { get; set; }

    /// <summary>
    /// 往返 [必填]
    /// 输入格式： YYYY-MM-DD
    /// 第二程有效航班起飞日期截止
    /// </summary>
    public string dptDateEnd2 { get; set; }

    /// <summary>
    /// 往返
    /// 第二程无效航班起飞日期
    /// 选填，格式 YYYY-MM-DD/YYYY-MM-DD,YYYY-MM-DD/YYYY-MM-DD如:2010-02-02/2010-02-03,2010-02-06/2010-02-08
    /// 为空默认不限制
    /// </summary>
    public string dptDateForbid2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程航班起飞时间段
    /// 选填，格式 HHMM-HHMM，多个时间段英文逗号间隔，例如：0800-1230,1500-1800，不填默认不限制
    /// </summary>
    public string deptTimeSlot2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程班期限制
    /// 1234567 表示周一、周二、周三、周四、周五、周六、周日，不能为空
    /// </summary>
    public string dayCondition2 { get; set; } = "1,2,3,4,5,6,7";


    /// <summary>
    /// 最短停留分钟
    /// 航班组合之间的最短时间间隔，单位：分钟
    /// </summary>
    public string shortStopTimeMinute { get; set; }

    /// <summary>
    /// 往返
    /// 第二程运价类型
    /// 公布运价/私有运价/往返直减运价/指定票面价
    /// </summary>
    public string printSource2 { get; set; } = "公布运价";

    /// <summary>
    /// 往返
    /// 指定票面价时必填
    /// 第二程票面价
    /// 指定票面价时必填。票面价只能是正整数，折扣是 0-1 之间小数。
    /// </summary>
    public string printPrice2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程舱位取价
    /// 私有运价必填
    /// 私有运价必填，取高/取低，控制私有运价一舱多价时运价选取
    /// </summary>
    public string selectType2 { get; set; }

    /// <summary>
    /// 往返
    /// 公式计算票面价(适用舱位)/公式计算票面价 (订座舱位)/公式计算票面价(联动舱位)，
    /// 公布运价/私有运价/直减运价时必填。
    /// 第二程公式计算票面价类型
    /// </summary>
    public string printComputeType2 { get; set; }


    /// <summary>
    /// 往返
    /// 订座和联动公式必填，X 为计算票面价的基准舱位，大写英文字母或者大写英文字母+数字，仅支持输入一个舱位
    /// 第二程 X 代表舱位
    /// </summary>
    public string xCabin2 { get; set; }


    /// <summary>
    /// 往返
    /// 联动公式必填,多个舱位无须间隔，按填写顺序依次尝试使用
    /// 第二程联动舱位
    /// </summary>
    public string linkedCabin2 { get; set; }


    /// <summary>
    /// 往返
    /// 默认0最多支持两位小数，支持正负，指定票面价无须填写
    /// 第二程票面价返点
    /// </summary>
    public string printReturnPoint2 { get; set; }

    /// <summary>
    /// 往返
    /// 第二程票面 留钱
    /// 默认 0，仅支持正负整数，指定票面价无须填写
    /// </summary>
    public string printReturnPrice2 { get; set; }

    /// <summary>
    /// 往返
    /// 第二程取整方式
    /// 十位四舍五入/十位五舍六入/个位向上取整/个位向下取整/十位向上取整/十位向下取整，指定票面价无须填写
    /// </summary>
    //public string xPriceType2 { get; set; }


    /// <summary>
    /// 往返 
    /// 选填
    /// 第二程最低票面价
    /// 录入正整数有效，低于最低票面价不展示
    /// </summary>
    public string minPrintPrice2 { get; set; }

    /// <summary>
    /// 往返 
    /// 选填
    /// 第二程最高票面价
    /// 录入正整数有效，高于最高票面价不展示
    /// </summary>
    public string maxPrintPrice2 { get; set; }

    /// <summary>
    /// 往返
    /// 第二程政策价返点
    /// 只支持数字输入，最多支持两位小数，如：15.25，代表返点 15.25
    /// </summary>
    public string policyReturnPoint2 { get; set; }


    /// <summary>
    /// 往返
    /// 支持正负整数输入
    /// 第二程政策价留钱
    /// </summary>
    public string policyReturnPrice2 { get; set; }


    /// <summary>
    /// 往返 选填，
    /// 第二程出发机场
    /// 机场三字码，仅支持单个机场录入，只有是否精准跨机场为是时，才能录入。
    /// </summary>
    public string dpt2 { get; set; }


    /// <summary>
    /// 往返 选填，
    /// 第二程到达机场
    /// 机场三字码，仅支持单个机场录入，只有是否精准跨机场为是时，才能录入。
    /// </summary>
    public string arr2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程最晚提前出票时限
    /// 选填，含当天，正整数有效。例如：最晚出票时限为 2，用户至少需要提前 2 天预订第二程机票。（单位：天）
    /// </summary>
    public int beforeTicket2 { get; set; }


    /// <summary>
    /// 往返
    /// 第二程最早提前出票时限
    /// 选填，含当天，正整数有效，
    /// 不能小于第二程最晚提前出票时限！
    /// 例如：最早出票时限为 5，用户至多提前 5 天预订第二程机票。（单位：天）
    /// </summary>
    public string earliestBeforeTicket2 { get; set; }


    /// <summary>
    /// 往返
    /// 最短停留时间
    /// 航班组合之间的最短时间间隔，单位：小时
    /// 此字段将于23年7月31日废弃，请尽快调整为使用“最短停留分钟”字段
    /// </summary>
    public int shortStopTime { get; set; }

    ///// <summary>
    ///// 是否精准跨机场
    ///// 否
    ///// 选填，录入是时，需填写第二程出发到达,且需要跨机场
    ///// </summary>
    //[XmlAttribute]
    //public string supportMultiAirports { get; set; }

    #endregion
}